window: Use settings from screen rather than default
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 25 Mar 2011 14:46:41 +0000 (15:46 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 25 Mar 2011 16:41:19 +0000 (17:41 +0100)
gtk_settings_get_default() was used to monitor the
"gtk-application-prefers-dark-theme" setting, rather
than the GtkSettings object associated with the window's
screen.

gtk/gtkwindow.c

index 8d5113e0c2847f3d6641947048c1009f4c153c23..16e5fb0d7785a605aee932ccc93590b11c418141 100644 (file)
@@ -1117,7 +1117,7 @@ gtk_window_init (GtkWindow *window)
                       G_CALLBACK (gtk_window_on_composited_changed), window);
 
 #ifdef GDK_WINDOWING_X11
-  g_signal_connect (gtk_settings_get_default (),
+  g_signal_connect (gtk_settings_get_for_screen (priv->screen),
                     "notify::gtk-application-prefer-dark-theme",
                     G_CALLBACK (gtk_window_on_theme_variant_changed), window);
 #endif
@@ -8013,10 +8013,21 @@ gtk_window_set_screen (GtkWindow *window,
   if (screen != previous_screen)
     {
       if (previous_screen)
-        g_signal_handlers_disconnect_by_func (previous_screen,
-                                              gtk_window_on_composited_changed, window);
+        {
+          g_signal_handlers_disconnect_by_func (previous_screen,
+                                                gtk_window_on_composited_changed, window);
+#ifdef GDK_WINDOWING_X11
+          g_signal_handlers_disconnect_by_func (gtk_settings_get_for_screen (previous_screen),
+                                                gtk_window_on_theme_variant_changed, window);
+#endif
+        }
       g_signal_connect (screen, "composited-changed",
                         G_CALLBACK (gtk_window_on_composited_changed), window);
+#ifdef GDK_WINDOWING_X11
+      g_signal_connect (gtk_settings_get_for_screen (screen),
+                        "notify::gtk-application-prefer-dark-theme",
+                        G_CALLBACK (gtk_window_on_theme_variant_changed), window);
+#endif
 
       _gtk_widget_propagate_screen_changed (widget, previous_screen);
       _gtk_widget_propagate_composited_changed (widget);
@@ -8034,7 +8045,7 @@ gtk_window_set_theme_variant (GtkWindow *window)
   GdkWindow *gdk_window;
   gboolean   dark_theme_requested;
 
-  g_object_get (gtk_settings_get_default (),
+  g_object_get (gtk_settings_get_for_screen (window->priv->screen),
                 "gtk-application-prefer-dark-theme", &dark_theme_requested,
                 NULL);